//package com.gmail.deathswing.colormix;
//
//import java.util.HashSet;
//import java.util.Iterator;
//import java.util.Random;
//import java.util.Set;
//
//import com.gmail.deathswing.colormix.atom.ColorAtom;
//import com.gmail.deathswing.colormix.util.CollisionUtil;
//
//import android.app.Activity;
//import android.content.Intent;
//import android.graphics.Canvas;
//import android.graphics.Color;
//import android.graphics.Paint;
//import android.os.Bundle;
//import android.util.Log;
//import android.view.Display;
//import android.view.SurfaceHolder;
//import android.view.SurfaceHolder.Callback;
//import android.view.SurfaceView;
//import android.view.View;
//import android.view.View.OnClickListener;
//import android.view.WindowManager;
//import android.widget.Button;
//import android.widget.Toast;
//
//public class ColorMixActivity extends Activity {
//	public enum GAME_STATE {
//		STOP, READY, START
//	}
//	private SurfaceView mCanvas ;
//	private SurfaceHolder mHolder ;
//	private Button mGameStartBtn ;
//	private int screenWidth ;
//	private int screenHeight ;
//	
//	Set<ColorAtom> atomSet ;
//	Set<ColorAtom> newAtomSet ;
//	Set<ColorAtom> hitAtomSet ;
//	
//	int gameState = 0 ;
//	
//	private OnClickListener gameBtnOnClick = new OnClickListener() {
//		
//		public void onClick(View v) {
//			switch (v.getId()) {
//			case R.id.btn1:
//				startGame();
//				break;
//
//			default:
//				break;
//			}
//		}
//	};
//	
//    @Override
//    public void onCreate(Bundle savedInstanceState) {
//        super.onCreate(savedInstanceState);
//        setContentView(R.layout.main);
//        
//        WindowManager windowManager = getWindowManager();  
//        Display display = windowManager.getDefaultDisplay();  
//        screenWidth = display.getWidth();  
//        screenHeight = display.getHeight(); 
//        Log.d("Screen Width", screenWidth+ ":" + screenHeight);
//        
//        mGameStartBtn = (Button) findViewById(R.id.btn1) ;
//        mGameStartBtn.setOnClickListener(gameBtnOnClick);
//        mCanvas = (SurfaceView) findViewById(R.id.canvas1) ;
//        
//        mHolder = mCanvas.getHolder();
//        mHolder.addCallback(new GameDrawCallBack());
//    }
//    
//    private void startGame(){
////    	mGameStartBtn.setVisibility(View.GONE);
////    	if(gameState == 1){
////    		atomSet = new HashSet<ColorAtom>();
////    		newAtomSet = new HashSet<ColorAtom>();
////    		hitAtomSet = new HashSet<ColorAtom>();
////    		new Thread(new GameLogicalOperate()).start();
////    	}
////    	else
////    		Toast.makeText(this, "error1", 1500).show();
//    	Intent intent = new Intent(this, GameActivity.class);
//    	startActivity(intent);
//    }
//  
//    
//    class GameDrawCallBack implements Callback {
//
//		public void surfaceChanged(SurfaceHolder holder, int format, int width,
//				int height) {
//			Log.d("GameDrawCallBack", "surfaceChanged");
//		}
//
//		public void surfaceCreated(SurfaceHolder holder) {
//			Log.d("GameDrawCallBack", "surfaceCreated");
//			gameState = 1 ;
//		}
//
//		public void surfaceDestroyed(SurfaceHolder holder) {
//			Log.d("GameDrawCallBack", "surfaceDestroyed");
//		}
//    	
//    }
//    
//    class GameLogicalOperate implements Runnable{
//    	public static final int PRE_FRAME_TIME = 33 ;
//    	int frameNum = 0 ;
//		public void run() {
//			while(gameState > 0){
//				long startTime = System.currentTimeMillis();
//				frameNum++ ;
////				Log.d("GameLogicalOperate", "game data update");
//				if(frameNum == 1){
//					addAtomTo();
//				}
//				Canvas canvas = mHolder.lockCanvas();
//				if(canvas != null){
//					canvas.drawColor(Color.BLACK);
//					Paint paint = new Paint();
//					paint.setStrokeWidth(1);// 设置画笔粗细
//					iterateAllGameObject(canvas, paint);
//				}
//				mHolder.unlockCanvasAndPost(canvas);
//				
//				if(frameNum == 150)
//					frameNum = 0 ;
//				long endTime = System.currentTimeMillis();
//				int workTime = (int)(endTime - startTime) ;
//				while(workTime <= PRE_FRAME_TIME){
//					workTime = (int)(System.currentTimeMillis() - startTime);  
//			        Thread.yield();  
//				}
//			}
//		}
//		
//		private void addAtomTo(){
//			long seed = System.currentTimeMillis();
//			for(int i=0; i<3; i++){
//				ColorAtom atom = new ColorAtom();
//				Random rnd = new Random(seed);
//				atom.value = rnd.nextInt(3)+1;
//				switch (atom.value) {
//				case 1:
//					atom.red = 255 ;
//					break;
//				case 2:
//					atom.green = 255 ;
//					break ;
//				case 3:
//					atom.blue = 255 ;
//					break ;
//				default:
//					break;
//				}
//				
//				switch (i) {
//				case 0:
//					atom.x = 0;
//					atom.y = rnd.nextInt(screenHeight)+1;
//					break;
//				case 1:
//					atom.x = rnd.nextInt(screenWidth)+1;
//					atom.y = 0;
//					break;
//				case 2:
//					atom.x = screenWidth;
//					atom.y = rnd.nextInt(screenHeight)+1;
//					break;
//				default:
//					break;
//				}
//				newAtomSet.add(atom);
//				seed = rnd.nextLong();
//			}
//		}
//		
//		int flag = -1 ;
//		private void iterateAllGameObject(Canvas canvas, Paint paint){
//			Iterator<ColorAtom> itor = newAtomSet.iterator();
//			while (itor.hasNext()) {
//				ColorAtom atom = itor.next();
//				paint.setARGB(atom.alpha, atom.red, atom.green, atom.blue);
//				canvas.drawCircle(atom.x, atom.y, 15, paint);
//				if(atom.flashFrame > 0){
//					atom.alpha = atom.alpha + flag*51 ;
//					atom.flashFrame-- ;
//					if(atom.alpha < 51)
//						flag = -1*flag ;
//					if(atom.alpha == 255)
//						flag = -1 ;
//				}else{
//					atomSet.add(atom);
//					itor.remove();
//				}
//			}
//			itor = atomSet.iterator() ;
////			while (itor.hasNext()) {
////				ColorAtom atom = itor.next();
////				atomSet.remove(atom);
////				ColorAtom hitAtom = CollisionUtil.checkTouch(atom.x, atom.y, atomSet.iterator());
////				if(hitAtom != null){
////					atomSet.remove(hitAtom);
////				}else{
////					paint.setARGB(atom.alpha, atom.red, atom.green, atom.blue);
////					canvas.drawCircle(atom.x, atom.y, 15, paint);
////					if(atom.x > screenWidth/2 -15){
////						atom.x -= atom.speed ;
////					}else if(atom.x < screenHeight/2 -15){
////						atom.x += atom.speed ;
////					}
////					if(atom.y > screenHeight/2 -15){
////						atom.y -= atom.speed ;
////					}else if(atom.y < screenHeight/2 -15){
////						atom.y += atom.speed ;
////					}
////				}
////				break ;
////			}
////			if(!atomSet.isEmpty()){
////				iterateAllGameObject(canvas, paint);
////			}
//		}
//    }
//}